<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
 <title>WebIM UI 示例</title>
  <meta name="renderer" content="webkit">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="../../../res/layui/css/layui.css" media="all">
  <link rel="stylesheet" href="../../../res/adminui/dist/css/admin.css" media="all">
</head>
<body>

  <div class="layui-fluid">
    <div class="layui-row layui-col-space15">
      <div class="layui-col-md12">
        <div class="layui-card">
          <div class="layui-card-header">面板外的操作示例</div>
          <div class="layui-card-body">
            
            <div class="layui-btn-container" id="LAY-layim-demo">
              <button class="layui-btn layui-btn-primary" data-type="chat">自定义会话</button>
              <button class="layui-btn layui-btn-primary" data-type="message">接受好友的消息</button>
              <button class="layui-btn layui-btn-primary" data-type="messageAudio">接受音频消息</button>
              <button class="layui-btn layui-btn-primary" data-type="messageVideo">接受视频消息</button>
              <button class="layui-btn layui-btn-primary" data-type="messageTemp">接受临时会话消息</button>

              <br>

              <button class="layui-btn layui-btn-primary" data-type="add">申请好友</button>
              <button class="layui-btn layui-btn-primary" data-type="addqun">申请加群</button>
              <button class="layui-btn layui-btn-primary" data-type="addFriend">同意好友</button>
              <button class="layui-btn layui-btn-primary" data-type="addGroup">增加群组到主面板</button>
              <button class="layui-btn layui-btn-primary" data-type="removeFriend">删除主面板好友</button>
              <button class="layui-btn layui-btn-primary" data-type="removeGroup">删除主面板群组</button>

              <br>

              <button class="layui-btn layui-btn-primary" data-type="setGray">置灰离线好友</button>
              <button class="layui-btn layui-btn-primary" data-type="unGray">取消好友置灰</button>
            </div>
            
          </div>
        </div>
      </div>
    </div>
  </div>

  <script src="../../../res/layui/layui.js"></script>  
  <script>
  layui.config({
    base: '../../../res/' // 静态资源所在路径
  }).config({
    layimPath: layui.cache.base + 'modules/layim/', //配置 layim.js 所在目录
    layimResPath: layui.cache.base + 'modules/layim/res/' //layim 资源文件所在目录
  }).use(['index', 'layim'], function(){
    var layim = layui.layim;

    // 演示自动回复
    var autoReplay = [
      '模拟消息 1', 
      '模拟消息 2',
      '模拟消息 3',
      '模拟消息 4',
      '模拟消息 5',
      '模拟消息 6',
      '模拟消息 7',
      '模拟消息 8',
      '模拟消息 9'
    ];
    
    //基础配置
    layim.config({
      //初始化接口
      init: {
        url: layui.setter.paths.base + 'json/layim/getList.js'
        ,data: {}
      }

      //查看群员接口
      ,members: {
        url: layui.setter.paths.base + 'json/layim/getMembers.js'
        ,data: {}
      }
      
      //上传图片接口
      ,uploadImage: {
        url: '' //（返回的数据格式见下文）
        ,type: '' //默认post
      } 
      
      //上传文件接口
      ,uploadFile: {
        url: '' //（返回的数据格式见下文）
        ,type: '' //默认post
      }
      
      ,isAudio: true
      ,isVideo: true
      
      //扩展工具栏
      ,tool: [{
        alias: 'code'
        ,title: '代码'
        ,icon: '&#xe64e;'
      }]
      
      // 更多参数见 layim 文档
      
      ,msgbox: layui.cache.layimResPath + 'html/msgbox.html' //消息盒子页面地址，若不开启，剔除该项即可
      ,find: layui.cache.layimResPath + 'html/find.html' //发现页面地址，若不开启，剔除该项即可
      ,chatLog: layui.cache.layimResPath + 'html/chatLog.html' //聊天记录页面地址，若不开启，剔除该项即可
      
    });


    //事件 - 在线状态的切换事件
    layim.on('online', function(data){
      //console.log(data);
    });
    
    //事件 - 签名修改
    layim.on('sign', function(value){
      //console.log(value);
    });

    //事件 - 自定义工具栏点击，以添加代码为例
    layim.on('tool(code)', function(insert){
      layer.prompt({
        title: '插入代码'
        ,formType: 2
        ,shade: 0
      }, function(text, index){
        layer.close(index);
        insert('[pre class=layui-code]' + text + '[/pre]'); //将内容插入到编辑器
      });
    });
    
    //事件 - layim建立就绪
    layim.on('ready', function(res){

      //console.log(res.mine);
      
      layim.msgbox(5); //模拟消息盒子有新消息，实际使用时，一般是动态获得
    
      // 向主面板添加群组
      layim.addList({
        type: 'group'
        ,avatar: "http://tva3.sinaimg.cn/crop.64.106.361.361.50/7181dbb3jw8evfbtem8edj20ci0dpq3a.jpg"
        ,groupname: '前端开发'
        ,id: "12333333"
        ,members: 0
      });

      // 向主面板添加好友（如果检测到该 socket）
      layim.addList({
        type: 'friend'
        ,avatar: layim.cache().base.defaultAvatar // 这里赋值默认头像，实际使用时请改成正式头像地址
        ,username: '测试222'
        ,groupid: 2
        ,id: "1233333312121212"
        ,remark: "remark"
      });
      
      setTimeout(function(){
        //接受消息（如果检测到该socket）
        
        //临时会话的消息，即消息发送者不在好友列表上
        /*
        layim.getMessage({
          username: "Hi"
          ,avatar: "http://qzapp.qlogo.cn/qzapp/100280987/56ADC83E78CEC046F8DF2C5D0DD63CDE/100"
          ,id: "10000111"
          ,type: "friend"
          ,cid: Math.random()*100000|0 //模拟消息id
          ,content: "临时："+ new Date().getTime()
        });*/
        
        //好友的消息
        layim.getMessage({
          username: "测试1"
          ,avatar: ""
          ,id: "100001"
          ,type: "friend"
          ,cid: Math.random()*100000|0 //模拟消息 id，会赋值在li的data-cid上，以便完成一些消息的操作（如撤回），可不填
          ,content: "这是模拟接受的一段测试消息。标记："+ new Date().getTime()
        });
        
      }, 1500);
    });

    //事件 - 发送消息
    layim.on('sendMessage', function(data){
      var To = data.to;
      //console.log(data);
      
      if(To.type === 'friend'){
        layim.setChatStatus('<span style="color:#FF5722;">对方正在输入…</span>');
      }
      
      //演示自动回复
      setTimeout(function(){
        var obj = {};
        if(To.type === 'group'){
          obj = {
            username: '模拟群员 ' +(Math.random()*100|0)
            ,avatar: layim.cache().base.defaultAvatar // 这里赋值默认头像，实际使用时请改成正式头像地址
            ,id: To.id
            ,type: To.type
            ,content: autoReplay[Math.random()*9|0]
          }
        } else {
          obj = {
            username: To.name
            ,avatar: To.avatar
            ,id: To.id
            ,type: To.type
            ,content: autoReplay[Math.random()*9|0]
          }
          layim.setChatStatus('<span style="color:#FF5722;">在线</span>');
        }
        layim.getMessage(obj);
      }, 1000);
    });

    //事件 - 查看群员
    layim.on('members', function(data){
      //console.log(data);
    });
    
    //事件 - 聊天窗口的切换
    layim.on('chatChange', function(res){
      var type = res.data.type;
      //console.log(res.data.id)
      if(type === 'friend'){
        //模拟标注好友状态
        //layim.setChatStatus('<span style="color:#FF5722;">在线</span>');
      } else if(type === 'group'){
        //模拟系统消息
        layim.getMessage({
          system: true
          ,id: res.data.id
          ,type: "group"
          ,content: '模拟群员'+(Math.random()*100|0) + '加入群聊'
        });
      }
    });
    
    //事件 - 更换背景
    layim.on('setSkin', function(filename, src){
      console.log(filename)
    });

    // 面板外的操作示例事件
    layui.use('util', function(util){
      util.on('data-type', {
        chat: function(){
          //自定义会话
          layim.chat({
            name: '小测试'
            ,type: 'friend'
            ,avatar: '//tva3.sinaimg.cn/crop.0.0.180.180.180/7f5f6861jw1e8qgp5bmzyj2050050aa8.jpg'
            ,id: 1008612
          });
          layer.msg('即：会话对象不必非要在右下角主面板中');
        }
        ,message: function(){
          //制造好友消息
          layim.getMessage({
            username: "测试1"
            ,avatar: "//unpkg.com/outeres/demo/avatar/0.png"
            ,id: "100001"
            ,type: "friend"
            ,content: "这是一条测试内容。演示标记："+ new Date().getTime()
            ,timestamp: new Date().getTime()
          });
        }
        ,messageAudio: function(){
          //接受音频消息
          layim.getMessage({
            username: "测试1"
            ,avatar: "//unpkg.com/outeres/demo/avatar/0.png"
            ,id: "100001"
            ,type: "friend"
            ,content: "audio[//unpkg.com/outeres/audio/test.mp3]"
            ,timestamp: new Date().getTime()
          });
        }
        ,messageVideo: function(){
          //接受视频消息
          layim.getMessage({
            username: "测试1"
            ,avatar: "//unpkg.com/outeres/demo/avatar/0.png"
            ,id: "100001"
            ,type: "friend"
            ,content: "video[http://www.w3school.com.cn//i/movie.ogg]"
            ,timestamp: new Date().getTime()
          });
        }
        ,messageTemp: function(){
          //接受临时会话消息
          layim.getMessage({
            username: "测试X"
            ,avatar: "//unpkg.com/outeres/demo/avatar/0.png"
            ,id: "198909151014"
            ,type: "friend"
            ,content: "临时："+ new Date().getTime()
          });
        }
        ,add: function(){
          //实际使用时数据由动态获得
          layim.add({
            type: 'friend'
            ,username: '测试Y'
            ,avatar: '//unpkg.com/outeres/demo/avatar/0.png'
            ,submit: function(group, remark, index){
              layer.msg('好友申请已发送，请等待对方确认', {
                icon: 1
                ,shade: 0.5
              }, function(){
                layer.close(index);
              });
              
              //通知对方
              /*
              $.post('/im-applyFriend/', {
                uid: info.uid
                ,from_group: group
                ,remark: remark
              }, function(res){
                if(res.status != 0){
                  return layer.msg(res.msg);
                }

                layer.msg('好友申请已发送，请等待对方确认', {
                  icon: 1
                  ,shade: 0.5
                }, function(){
                  layer.close(index);
                });
              });
              */
            }
          });
        }
        ,addqun: function(){
          layim.add({
            type: 'group'
            ,username: '测试群组1'
            ,avatar: '//unpkg.com/outeres/demo/avatar/0.png'
            ,group: layim.cache().friend
            ,submit: function(group, remark, index){
              layer.msg('申请已发送，请等待管理员确认', {
                icon: 1
                ,shade: 0.5
              }, function(){
                layer.close(index);
              });
              
              //通知对方
              /*
              $.post('/im-applyGroup/', {
                uid: info.uid
                ,from_group: group
                ,remark: remark
              }, function(res){
              
              });
              */
            }
          });
        }
        ,addFriend: function(){
          var user = {
            type: 'friend'
            ,id: 1234560
            ,username: '测试A' //好友昵称，若申请加群，参数为：groupname
            ,avatar: '//unpkg.com/outeres/demo/avatar/0.png' //头像
            ,sign: '测试内容'
          }
          layim.setFriendGroup({
            type: user.type
            ,username: user.username
            ,avatar: user.avatar
            ,group: layim.cache().friend //获取好友列表数据
            ,submit: function(group, index){
              //一般在此执行Ajax和WS，以通知对方已经同意申请
              //……
              
              //同意后，将好友追加到主面板
              layim.addList({
                type: user.type
                ,username: user.username
                ,avatar: user.avatar
                ,groupid: group //所在的分组id
                ,id: user.id //好友ID
                ,sign: user.sign //好友签名
              });
              
              layer.close(index);
            }
          });
        }
        ,addGroup: function(){
          layer.msg('已成功把[测试群组33]添加到群组里', {
            icon: 1
          });
          //增加一个群组
          layim.addList({
            type: 'group'
            ,avatar: "//unpkg.com/outeres/demo/avatar/0.png"
            ,groupname: '测试群组33'
            ,id: "12333333"
            ,members: 0
          });
        }
        ,removeFriend: function(){
          layer.msg('已成功删除[测试2]', {
            icon: 1
          });
          //删除一个好友
          layim.removeList({
            id: 100001222
            ,type: 'friend'
          });
        }
        ,removeGroup: function(){
          layer.msg('已成功删除[测试群组33]', {
            icon: 1
          });
          //删除一个群组
          layim.removeList({
            id: 12333333
            ,type: 'group'
          });
        }
        //置灰离线好友
        ,setGray: function(){
          layim.setFriendStatus(168168, 'offline');
          
          layer.msg('已成功将好友[测试4]置灰', {
            icon: 1
          });
        }
        //取消好友置灰
        ,unGray: function(){
          layim.setFriendStatus(168168, 'online');
          
          layer.msg('成功取消好友[测试4]置灰状态', {
            icon: 1
          });
        }
        //移动端版本
        ,mobile: function(){
          var device = layui.device();
          var mobileHome = 'mobile.html';
          if(device.android || device.ios){
            return location.href = mobileHome;
          }
          var index = layer.open({
            type: 2
            ,title: '移动版演示'
            ,content: mobileHome
            ,area: ['375px', '667px']
            ,shadeClose: true
            ,scrollbar: false
            ,shade: 0.8
            ,end: function(){
              layer.close(index + 2);
            }
          });
        }
      });
    });
    
  });
  </script>